import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router'

/**
 * 小白注释：按需加载（懒加载）
 * 做了什么：把每个页面改成函数形式的 import，只有当你“真的访问这个路由”时才会下载对应的页面代码；
 * 好处：首屏更快，打包文件更小。
 */
const Dashboard = () => import('../views/DashboardView.vue')
// 小白注释：欢迎页 HomeView（首页），按需加载
const Home = () => import('../views/HomeView.vue')
const SubjectList = () => import('../views/SubjectList.vue')
const Quiz = () => import('../views/Quiz.vue')
const Continue = () => import('../views/Continue.vue')
const Practice = () => import('../views/Practice.vue')
const StudyPlan = () => import('../views/StudyPlan.vue')
const Notes = () => import('../views/Notes.vue')

/**
 * 小白注释：路由表
 * 做了什么：把“访问路径”和“对应页面”一一对应起来，并加上中文标题（meta.title）；
 * 例子：访问 /quiz 就会显示 Quiz 页面，浏览器标题会显示“模拟考试 · 智学Web应用”。
 */
/**
 * 小白注释：路由表（将首页切回 Dashboard）
 * 做了什么：现在访问 '/' 显示 Dashboard（学习中心）；欢迎页改到 '/home' 单独入口。
 */
const routes: RouteRecordRaw[] = [
  // 首页：学习中心（与之前风格一致）
  { path: '/', name: 'dashboard', component: Dashboard, meta: { title: '学习中心' } },
  // 欢迎页：单独入口，可手动访问或从菜单进入
  { path: '/home', name: 'home', component: Home, meta: { title: '首页' } },
  { path: '/subjects', name: 'subjects', component: SubjectList, meta: { title: '学科列表' } },
  { path: '/quiz', name: 'quiz', component: Quiz, meta: { title: '模拟考试' } },
  { path: '/continue', name: 'continue', component: Continue, meta: { title: '继续学习' } },
  { path: '/practice', name: 'practice', component: Practice, meta: { title: '今日练习' } },
  { path: '/plan', name: 'plan', component: StudyPlan, meta: { title: '学习计划' } },
  { path: '/notes', name: 'notes', component: Notes, meta: { title: '我的笔记' } },
  // 小白注释：兜底路由。如果输入了不存在的地址，自动回到首页，避免白屏。
  { path: '/:pathMatch(.*)*', redirect: '/' },
]

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes,
})

/**
 * 小白注释：全局前置守卫
 * 做了什么：在每次路由切换前，根据路由的 meta.title 设置浏览器标签页标题；
 * 你可以在 routes 里修改每个页面的中文标题。
 */
router.beforeEach((to) => {
  const appName = '智学Web应用'
  document.title = to.meta?.title ? `${to.meta.title} · ${appName}` : appName
})

export default router
